#!/usr/bin/env node
// #!/usr/bin/env node 表示使用node执行这个文件
import { program } from 'commander'
import fs from 'fs'
import inquirer from 'inquirer'
import { downloadTemp, questions, checkPathExist } from "./utils/index.js"

// 定义一个版本查询的命令
let json = fs.readFileSync('./package.json', 'utf-8')
json = JSON.parse(json)

// 定义一个查看版本的命令 szx-cli -V
program.version(json.version)

// 创建交互命令 szx-cli create xxxx
program.command('create').alias('c').description('创建一个项目').action(() => {
    // 出现问题列表，交互式操作
    inquirer.prompt(questions).then(async (answers) => {
        // 获取用户选择的结果
        console.log(answers)
        // 根据用户选择的内容，创建项目
        // 1. 创建项目文件夹
        let pathIsExist = checkPathExist(answers.projectName)
        if (pathIsExist) {
            console.log('文件夹已存在')
            return
        }
        // 2. 创建项目模板
        if (answers.ists) {
            // 下载ts分支代码
            downloadTemp("ts", answers.projectName)
        } else {
            // 下载js分支代码
            downloadTemp("js", answers.projectName)
        }
    }).catch(() => {
        console.log('创建失败请重新尝试(TдT)')
        process.exit(1)
    })
})


// 接收命令行的参数交给program
program.parse(process.argv)